package com.wang.lottery.domain.strategy.service.algorithm;

import com.wang.lottery.domain.strategy.model.vo.AwardRateInfo;

import java.util.List;

/**
 * @author wjh
 * @create 2023-11-01 14:49
 * 抽奖算法接口
 */
public interface IDrawAlgorithm {
    /**
     * 初始化元组
     * @param strategyId 策略id
     * @param awardRateInfoList 初始化奖品列表
     */
    void initRateTuple(Long strategyId, List<AwardRateInfo> awardRateInfoList);

    /**
     * 判断是否做了数据初始化
     * @param strategyId 策略id
     * @return true为已经初始化，false为未初始化
     */
    boolean isExistRateTuple(Long strategyId);

    /**
     * 使用随机数抽奖，排除已经抽完的奖品，返回中奖结果
     * @param strategyId 策略id
     * @param excludeAwardIds 排除的奖品id列表
     * @return 中奖的奖品id，没中奖就返回“未中奖”
     */
    String randomDraw(Long strategyId,List<String> excludeAwardIds);
}
